@gpc-cli/core 0.9.77 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -56,7 +56,7 @@ const analysis = await analyzeBundle("./app.aab");
56
56
  | **Subscriptions** | `listSubscriptions`, `createSubscription`, `updateSubscription`, `deleteSubscription`, `listOffers`, `createOffer` |
57
57
  | **IAP** | `listInAppProducts`, `createInAppProduct`, `syncInAppProducts` |
58
58
  | **Purchases** | `getProductPurchase`, `acknowledgeProductPurchase`, `refundOrder` |
59
- | **Reports** | `listReports`, `downloadReport` |
59
+ | **Reports** | `listReports`, `downloadStatsReport`, `downloadFinancialReport` (Play bulk reports via GCS) |
60
60
  | **Users** | `listUsers`, `inviteUser`, `updateUser`, `removeUser` |
61
61
  | **Testers** | `listTesters`, `addTesters`, `removeTesters`, `importTestersFromCsv` |
62
62
  | **Bundle** | `analyzeBundle`, `compareBundles` (zero-dependency AAB/APK size analysis) |
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { OutputFormat, ResolvedConfig, WebhookConfig } from '@gpc-cli/config';
2
2
  import { AuthClient } from '@gpc-cli/auth';
3
3
  import { GpcPlugin, PluginManifest, CommandEvent, CommandResult, PluginError, RequestEvent, ResponseEvent, PluginCommand } from '@gpc-cli/plugin-sdk';
4
- import { PlayApiClient, EditCommitOptions, Track, ExternallyHostedApk, ExternallyHostedApkResponse, DeobfuscationFileType, UploadProgressEvent, ResumableUploadOptions, Listing, ImageType, CountryAvailability, Image, AppDetails, Review, ReviewReplyResponse, Subscription, SubscriptionOffer, OffersListResponse, BasePlanMigratePricesRequest, InAppProduct, Order, SubscriptionDeferResponse, SubscriptionsV2DeferResponse, ProductPurchase, ProductPurchaseV2, SubscriptionPurchaseV2, VoidedPurchase, UsersApiClient, User, DeveloperLevelPermission, Grant, MetricRow, ReportingDimension, ReportingAggregation, VitalsMetricSet, ReportingApiClient, AnomalyDetectionResponse, MetricSetResponse, ErrorIssuesResponse, ConvertRegionPricesResponse, ReportType, StatsDimension, ReportBucket, Testers, AppRecoveryTargeting, AppRecoveryAction, CreateAppRecoveryActionRequest, DataSafetyResponse, DataSafetyRequest, ExternalTransaction, ExternalTransactionRefund, DeviceTierConfig, OneTimeOffer, OneTimeProduct, OneTimeOffersListResponse, OneTimeProductsListResponse, GamesConfigClient, AchievementConfiguration, LeaderboardConfiguration, AchievementConfigurationListResponse, GamesApiClient, Achievement, LeaderboardConfigurationListResponse, Leaderboard, ImageConfiguration, EnterpriseApiClient, CustomApp, GeneratedApksPerSigningKey, Bundle } from '@gpc-cli/api';
4
+ import { PlayApiClient, EditCommitOptions, Track, ExternallyHostedApk, ExternallyHostedApkResponse, DeobfuscationFileType, UploadProgressEvent, ResumableUploadOptions, Listing, ImageType, CountryAvailability, Image, AppDetails, Review, ReviewReplyResponse, Subscription, SubscriptionOffer, OffersListResponse, BasePlanMigratePricesRequest, InAppProduct, Order, SubscriptionDeferResponse, SubscriptionsV2DeferResponse, ProductPurchase, ProductPurchaseV2, SubscriptionPurchaseV2, VoidedPurchase, UsersApiClient, User, DeveloperLevelPermission, Grant, MetricRow, ReportingDimension, ReportingAggregation, VitalsMetricSet, ReportingApiClient, AnomalyDetectionResponse, MetricSetResponse, ErrorIssuesResponse, ConvertRegionPricesResponse, ReportType, StatsDimension, Testers, AppRecoveryTargeting, AppRecoveryAction, CreateAppRecoveryActionRequest, DataSafetyResponse, DataSafetyRequest, ExternalTransaction, ExternalTransactionRefund, DeviceTierConfig, OneTimeOffer, OneTimeProduct, OneTimeOffersListResponse, OneTimeProductsListResponse, GamesConfigClient, AchievementConfiguration, LeaderboardConfiguration, AchievementConfigurationListResponse, GamesApiClient, Achievement, LeaderboardConfigurationListResponse, Leaderboard, ImageConfiguration, EnterpriseApiClient, CustomApp, GeneratedApksPerSigningKey, Bundle } from '@gpc-cli/api';
5
5
 
6
6
  declare class GpcError extends Error {
7
7
  readonly code: string;
@@ -112,16 +112,38 @@ interface DiscoverPluginsOptions {
112
112
  configPlugins?: string[];
113
113
  /** Approved third-party plugin names (from config.approvedPlugins) */
114
114
  approvedPlugins?: string[];
115
- /** Working directory for node_modules scanning */
115
+ /** Approved plugins explicitly grandfathered for missing permission metadata */
116
+ legacyApprovedPlugins?: string[];
117
+ /** Base directory for resolving relative plugin paths */
116
118
  cwd?: string;
119
+ /** @internal Testable resolver for verifying package identity before import. */
120
+ resolveSpecifier?: (specifier: string) => string;
121
+ }
122
+ interface DiscoveredPlugin {
123
+ plugin: GpcPlugin;
124
+ manifest: PluginManifest;
125
+ /** True when broad compatibility permissions were supplied for an older plugin package. */
126
+ legacyPermissions: boolean;
117
127
  }
118
128
  /**
119
- * Discover plugins from config: gpc.config.ts → plugins: [...]
129
+ * Discover plugins supplied through `configPlugins` (normally `.gpcrc.json`'s `plugins` field).
120
130
  *
121
131
  * Only trusted/approved plugins are imported. Untrusted specifiers are
122
132
  * skipped before import() to prevent top-level module code execution.
123
133
  */
134
+ declare function discoverPluginEntries(options?: DiscoverPluginsOptions): Promise<DiscoveredPlugin[]>;
135
+ /**
136
+ * Backwards-compatible discovery API for SDK consumers that load plugins themselves.
137
+ * Callers using the original approvedPlugins-only contract retain legacy metadata behavior;
138
+ * the CLI uses discoverPluginEntries() with its persisted, stricter compatibility set.
139
+ */
124
140
  declare function discoverPlugins(options?: DiscoverPluginsOptions): Promise<GpcPlugin[]>;
141
+ interface ValidatedPluginApproval {
142
+ specifier: string;
143
+ manifest: PluginManifest;
144
+ }
145
+ /** Validate a third-party package before adding it to the user's approval list. */
146
+ declare function validatePluginForApproval(specifier: string, cwd?: string): Promise<ValidatedPluginApproval>;
125
147
 
126
148
  interface AppInfo {
127
149
  packageName: string;
@@ -792,6 +814,74 @@ declare function validateImage(filePath: string, imageType?: string): Promise<Im
792
814
 
793
815
  declare function convertRegionPrices(client: PlayApiClient, packageName: string, currencyCode: string, amount: string): Promise<ConvertRegionPricesResponse>;
794
816
 
817
+ /**
818
+ * Minimal Google Cloud Storage JSON API reader for the Play bulk-reports bucket
819
+ * (pubsite_prod_<developerId>). Deliberately dependency-free: the token already carries the
820
+ * devstorage.read_only scope (see @gpc-cli/auth), so plain fetch against the JSON API is all
821
+ * that is needed — no @google-cloud/storage.
822
+ *
823
+ * Access model (verified live 2026-07-24/2026-08-01): once the service account is granted
824
+ * "View app information and download bulk reports (read-only)" in Play Console, it gets
825
+ * objects LIST + GET on the whole bucket, so discovery-first (list a prefix, filter, then
826
+ * download) is the design. Without the grant every call returns 403.
827
+ */
828
+ interface ReportsAuth {
829
+ getAccessToken(): Promise<string>;
830
+ }
831
+ interface ReportObject {
832
+ /** Full object name, e.g. stats/installs/installs_com.example.app_202606_overview.csv */
833
+ name: string;
834
+ /** Object size in bytes (as reported by GCS; compressed size for gzip-encoded objects). */
835
+ size: number;
836
+ updated?: string;
837
+ }
838
+ interface ListReportObjectsResult {
839
+ objects: ReportObject[];
840
+ nextPageToken?: string;
841
+ }
842
+ /**
843
+ * List objects under a prefix. 404 here means the bucket itself is wrong (a missing prefix
844
+ * is a 200 with no items), so it maps to REPORT_BUCKET_NOT_FOUND.
845
+ */
846
+ declare function listReportObjects(auth: ReportsAuth, bucket: string, options: {
847
+ prefix: string;
848
+ maxResults?: number;
849
+ pageToken?: string;
850
+ }): Promise<ListReportObjectsResult>;
851
+ /**
852
+ * Download a single report object's bytes (alt=media). GCS transparently gunzips
853
+ * content-encoding:gzip objects on this path in Node's fetch, but callers must still run the
854
+ * bytes through the decode layer, which re-checks the gzip magic as a backstop.
855
+ */
856
+ declare function downloadReportObject(auth: ReportsAuth, bucket: string, objectName: string): Promise<Buffer>;
857
+
858
+ declare function isGzip(buf: Uint8Array): boolean;
859
+ declare function isZip(buf: Uint8Array): boolean;
860
+ /** Inflate the buffer if it carries the gzip magic bytes; otherwise return it unchanged. */
861
+ declare function gunzipIfNeeded(buf: Buffer): Buffer;
862
+ /**
863
+ * Decode report CSV bytes to a string, honoring the byte-order mark. Play stats reports are
864
+ * UTF-16LE with a BOM; UTF-16BE and UTF-8-BOM are handled defensively, and BOM-less bytes
865
+ * fall back to UTF-8.
866
+ */
867
+ declare function decodeCsvText(buf: Buffer): string;
868
+ /**
869
+ * Decode a single stats report object: inflate if gzipped, then decode UTF-16/UTF-8 to text.
870
+ * This is the common path for `stats/**` objects (installs, crashes, ratings, ...).
871
+ */
872
+ declare function decodeStatsCsv(buf: Buffer): string;
873
+ interface ZipCsvEntry {
874
+ name: string;
875
+ text: string;
876
+ }
877
+ /**
878
+ * Extract the CSV entries from a financial report ZIP archive, returned as decoded text.
879
+ * Uses yauzl's `fromBuffer` (no file descriptor) so it behaves identically under the
880
+ * Bun-compiled standalone binary, and is bounded by a timeout so a corrupt archive can
881
+ * never hang the process (same hardening as the preflight AAB reader).
882
+ */
883
+ declare function extractCsvEntriesFromZip(buffer: Buffer): Promise<ZipCsvEntry[]>;
884
+
795
885
  declare function isFinancialReportType(type: string): boolean;
796
886
  declare function isStatsReportType(type: string): boolean;
797
887
  declare function isValidReportType(type: string): type is ReportType;
@@ -801,8 +891,77 @@ interface ParsedMonth {
801
891
  month: number;
802
892
  }
803
893
  declare function parseMonth(monthStr: string): ParsedMonth;
804
- declare function listReports(_client: PlayApiClient, _packageName: string, reportType: ReportType, _year: number, _month: number): Promise<ReportBucket[]>;
805
- declare function downloadReport(_client: PlayApiClient, _packageName: string, reportType: ReportType, _year: number, _month: number): Promise<string>;
894
+ /** "2026-06" -> "202606", the token embedded in Play report object names. */
895
+ declare function monthToken(parsed: ParsedMonth): string;
896
+ /**
897
+ * Resolve the reports bucket name. Play links one bucket per developer account, named
898
+ * pubsite_prod_<developerId>; an explicit config/flag value wins for accounts whose bucket
899
+ * URI differs.
900
+ */
901
+ declare function resolveReportsBucket(config: {
902
+ reports?: {
903
+ bucket?: string;
904
+ };
905
+ developerId?: string;
906
+ }): string;
907
+ /**
908
+ * Object-name prefix for a report type, per Play's documented bucket layout:
909
+ * stats/<type>/<type>_<package>_<YYYYMM>_<dimension>.csv
910
+ * reviews/reviews_<package>_<YYYYMM>.csv
911
+ * financial-stats/subscriptions/subscriptions_<package>_<YYYYMM>_country.csv
912
+ * earnings/earnings_<YYYYMM>*.zip sales/salesreport_<YYYYMM>.zip play_balance/...
913
+ * Financial reports are account-level, so the package name never narrows them.
914
+ */
915
+ declare function reportPrefix(reportType: ReportType, packageName?: string): string;
916
+ interface ListReportsResult {
917
+ reports: ReportObject[];
918
+ nextPageToken?: string;
919
+ }
920
+ declare function listReports(auth: ReportsAuth, bucket: string, reportType: ReportType, options?: {
921
+ packageName?: string;
922
+ month?: ParsedMonth;
923
+ maxResults?: number;
924
+ pageToken?: string;
925
+ }): Promise<ListReportsResult>;
926
+ interface StatsReportDownload {
927
+ objectName: string;
928
+ csv: string;
929
+ }
930
+ declare function downloadStatsReport(auth: ReportsAuth, bucket: string, packageName: string, reportType: ReportType, month: ParsedMonth, dimension: StatsDimension): Promise<StatsReportDownload>;
931
+ type FinancialReportDownload = {
932
+ objectName: string;
933
+ kind: "csv";
934
+ text: string;
935
+ } | {
936
+ objectName: string;
937
+ kind: "zip";
938
+ entries: ZipCsvEntry[];
939
+ raw: Buffer;
940
+ };
941
+ declare function downloadFinancialReport(auth: ReportsAuth, bucket: string, reportType: ReportType, month: ParsedMonth, options?: {
942
+ extractEntries?: boolean;
943
+ }): Promise<FinancialReportDownload>;
944
+
945
+ /**
946
+ * Typed errors for the GCS report-download path. Exit code 4 (API) across the board: these
947
+ * are all failures talking to the Google Cloud Storage side of Play, distinct from usage
948
+ * errors (invalid type/month, exit 2) which stay in the command layer.
949
+ */
950
+ /**
951
+ * The service account authenticated but is not authorized to read the reports bucket. This
952
+ * is the common first-run failure: the "download bulk reports" permission is NOT granted to
953
+ * a service account automatically, only to your own user.
954
+ */
955
+ declare function reportAccessDeniedError(bucket: string): GpcError;
956
+ /** The bucket name does not exist (or the account cannot see it at all). */
957
+ declare function reportBucketNotFoundError(bucket: string): GpcError;
958
+ /** No object matched the requested report type / month / dimension. */
959
+ declare function reportObjectNotFoundError(opts: {
960
+ reportType: string;
961
+ month: string;
962
+ dimension?: string;
963
+ available?: string[];
964
+ }): GpcError;
806
965
 
807
966
  declare function listGrants(client: UsersApiClient, developerId: string, email: string): Promise<Grant[]>;
808
967
  declare function createGrant(client: UsersApiClient, developerId: string, email: string, packageName: string, permissions: string[]): Promise<Grant>;
@@ -1774,4 +1933,4 @@ declare function readinessBadgeColor(grade: ReadinessGrade): string;
1774
1933
  declare function readinessBadgeUrl(score: ReadinessScore): string;
1775
1934
  declare function readinessBadgeMarkdown(score: ReadinessScore): string;
1776
1935
 
1777
- export { ApiError, type ApiSigningFingerprint, type AppInfo, type AppStatus, type ApplyReleaseNotesResult, type AuditEntry, type BatchSyncResult, type BundleAnalysis, type BundleComparison, type BundleEntry, type BundleSizeCheckResult, type BundleSizeConfig, type BundlesWaitOptions, type ChangelogEntry, type ChecklistInput, type ChecklistItem, type ChecklistResult, type CommandContext, type CommitCluster, type CommitResult, ConfigError, type CreateEnterpriseAppParams, DEFAULT_LIMITS, DEFAULT_MODELS, DEFAULT_PREFLIGHT_CONFIG, DEFAULT_WATCH_THRESHOLDS, type DecodedNotification, type DiffToken, type DiscoverPluginsOptions, type DryRunPublishResult, type DryRunResult, type DryRunUploadResult, type ErrorReason, type ExportImagesOptions, type ExportImagesSummary, type FastlaneDetection, type FastlaneLane, type FetchChangelogOptions, type FieldLintResult, type FileValidationResult, type FindingSeverity, GOOGLE_PLAY_LANGUAGES, type GameConfigDiff, type GamesPushOptions, type GamesSyncResult, type GenerateOptions, type GeneratedChangelog, type GetAppStatusOptions, type GitNotesOptions, type GitReleaseNotes, type GitRunner, GpcError, type ImageSyncDetail, type ImageSyncOptions, type ImageSyncResult, type ImageValidationResult, type InitOptions, type InitResult, type InternalSharingUploadResult, type KeystoreFingerprint, type ListGamesConfigOptions, type ListIapOptions, type ListSubscriptionsOptions, type ListUsersOptions, type ListVoidedOptions, type ListingDiff, type ListingFieldLimits, type ListingLintResult, type ListingsResult, type LoadedPlugin, type LocaleBundle, type LocaleEntry, type MigrationResult, NetworkError, type OneTimeProductDiff, type OutputMode, PERMISSION_PROPAGATION_WARNING, PLACEHOLDER_TEXT, PLAY_STORE_LIMIT, PROVIDER_WHITELIST, type ParsedCommit, type ParsedManifest, type ParsedMonth, type PlayStoreFormat, type PlayStoreRenderOptions, PluginManager, type PreflightConfig, type PreflightFinding, type PreflightOptions, type PreflightResult, type PreflightScanner, type Provider, type PublishOptions, type PublishResult, type PushResult, type QuotaUsage, RENDERERS, REVIEW_SORT_PRESETS, type RawCommit, type ReadinessBreakdownEntry, type ReadinessGrade, type ReadinessScore, type ReadinessSignal, type ReadinessSignalStatus, type ReleaseDiff, type ReleaseNotesValidation, type ReleaseStatusResult, type Renderer, type ResolveAiConfigOptions, type ResolveLocalesOptions, type ReviewAnalysis, type ReviewExportOptions, type ReviewSortPreset, type ReviewsFilterOptions, type RevocationRefundType, type RtdnStatus, SECTION_ORDER, SENSITIVE_ARG_KEYS, SENSITIVE_KEYS, SEVERITY_ORDER, type ScaffoldOptions, type ScaffoldResult, type SigningConsistencyResult, type SigningKeyComparison, type Spinner, type StatusDiff, type StatusRelease, type StatusReviews, type StatusVitalMetric, type SubscriptionAnalytics, type SubscriptionDiff, type SyncResult, type ThresholdResult, type TrainConfig, type TrainState, type TranslateBundleOptions, type TranslatedBundle, type TranslationFailure, type TranslationPath, type TranslationResult, type Translator, type TranslatorConfig, type UploadResult, VALID_WATCH_METRICS, type ValidateCheck, type ValidateOptions, type ValidateResult, type VersionVitalsComparison, type VersionVitalsRow, type VitalsOverview, type VitalsQueryOptions, type VitalsTrendComparison, type WatchAction, type WatchCallbacks, type WatchConfig, type WatchEvent, type WatchMetric, type WatchOptions, type WatchRollout, type WatchSummary, type WatchVitalReading, type WatchVitalsOptions, type WebhookPayload, abortTrain, acknowledgeProductPurchase, activateBasePlan, activateOffer, addRecoveryTargeting, addTesters, advanceTrain, analyzeBundle, analyzeRemoteListings, analyzeReviews, annotateListResult, applyReleaseNotes, assignRelease, batchGetOrders, batchSyncInAppProducts, buildChecklist, buildLocaleBundle, bundleToReleaseNotes, cancelRecoveryAction, cancelSubscriptionPurchase, cancelSubscriptionV2, checkBundleSize, checkSigningConsistency, checkThreshold, classifyError, clearAuditLog, commitWithRescue, compareBundles, compareFingerprints, compareVersionVitals, compareVitalsTrend, computeStatusDiff, consumeProductPurchase, convertRegionPrices, createAchievementConfig, createAuditEntry, createDeviceTier, createEnterpriseApp, createExternalTransaction, createGrant, createInAppProduct, createLeaderboardConfig, createOffer, createOneTimeOffer, createOneTimeProduct, createRecoveryAction, createSpinner, createSubscription, createTrack, createTranslator, deactivateBasePlan, deactivateOffer, decodeNotification, defaultGitRunner, deferSubscriptionPurchase, deferSubscriptionV2, deleteAchievementConfig, deleteBasePlan, deleteGrant, deleteImage, deleteInAppProduct, deleteLeaderboardConfig, deleteListing, deleteOffer, deleteOneTimeOffer, deleteOneTimeProduct, deleteSubscription, deployRecoveryAction, detectFastlane, detectOutputFormat, diffAchievementConfig, diffLeaderboardConfig, diffListings, diffListingsCommand, diffListingsEnhanced, diffOneTimeProduct, diffReleases, diffSubscription, discoverPlugins, dispatchWebhook, downloadGeneratedApk, downloadReport, exportImages, exportReviews, fetchAggregateCost, fetchChangelog, fetchReleaseNotes, findBundle, formatChangelogEntry, formatCustomPayload, formatDiscordPayload, formatJunit, formatMoney, formatNotification, formatOutput, formatPathLabel, formatSlackPayload, formatStatusDiff, formatStatusSummary, formatStatusTable, formatWordDiff, generateChangelog, generateMigrationPlan, generateNotesFromGit, getAchievementConfig, getAllScannerNames, getApiSigningFingerprint, getAppInfo, getAppStatus, getCountryAvailability, getDeviceTier, getExternalTransaction, getInAppProduct, getKeystoreFingerprint, getLeaderboardConfig, getListings, getOffer, getOneTimeOffer, getOneTimeProduct, getOrderDetails, getProductPurchase, getProductPurchaseV2, getQuotaUsage, getReleasesStatus, getReview, getRtdnStatus, getSubscription, getSubscriptionAnalytics, getSubscriptionPurchase, getTrainStatus, getUser, getVitalsAnomalies, getVitalsAnr, getVitalsBattery, getVitalsCrashes, getVitalsErrorCount, getVitalsLmk, getVitalsMemory, getVitalsOverview, getVitalsRendering, getVitalsStartup, gradeFromPercent, handleBreach, importDataSafety, importTestersFromCsv, initAudit, initProject, inviteUser, isFinancialReportType, isStatsReportType, isValidBcp47, isValidReportType, isValidStatsDimension, isVersionedNotesDir, lintListing, lintListings, lintLocalListings, listAchievementConfigs, listAchievements, listAuditEvents, listBundles, listDeviceTiers, listGeneratedApks, listGrants, listImages, listInAppProducts, listLeaderboardConfigs, listLeaderboards, listOffers, listOneTimeOffers, listOneTimeProducts, listRecoveryActions, listReports, listReviews, listSubscriptions, listTesters, listTracks, listUsers, listVoidedPurchases, loadPreflightConfig, loadStatusCache, maybePaginate, migratePrices, moreResultsFooter, normalizeFingerprint, parseAppfile, parseCommit, parseFastfile, parseGrantArg, parseKeytoolOutput, parseMonth, parseRemoteUrl, pauseTrain, promoteRelease, publish, publishEnterpriseApp, pullAchievementConfigs, pullLeaderboardConfigs, pullListings, pushAchievementConfigs, pushLeaderboardConfigs, pushListings, readListingsFromDir, readReleaseNotesForVersion, readReleaseNotesFromDir, readinessBadgeColor, readinessBadgeMarkdown, readinessBadgeUrl, redactAuditArgs, redactSensitive, refundExternalTransaction, refundOrder, relativeTime, removeTesters, removeUser, renderChecklistMarkdown, renderJson, renderMarkdown, renderPlayStore, renderPlayStoreJson, renderPlayStoreMd, renderPlayStorePrompt, renderPrompt, replyToReview, resolveAiConfig, resolveLocales, retryOnUploadNotComplete, revokeSubscriptionPurchase, runPreflight, runWatch, runWatchLoop, safePath, safePathWithin, saveStatusCache, scaffoldPlugin, scoreReadiness, searchAuditEvents, searchVitalsErrors, sendNotification, sendWebhook, setAchievementIcon, setLeaderboardIcon, sha256File, sortResults, sortReviews, startTrain, statusHasBreach, syncImages, syncInAppProducts, topFiles, trackBreachState, translateBundle, updateAchievementConfig, updateAppDetails, updateDataSafety, updateGrant, updateInAppProduct, updateLeaderboardConfig, updateListing, updateOffer, updateOneTimeOffer, updateOneTimeProduct, updateRollout, updateSubscription, updateTrackConfig, updateUser, uploadExternallyHosted, uploadImage, uploadInternalSharing, uploadRelease, validateAndCommit, validateBundleForApply, validateImage, validateLanguageCode, validatePackageName, validatePreSubmission, validateReleaseNotes, validateSku, validateTrackName, validateUploadFile, validateVersionCode, waitForBundle, waitForBundleProcessing, watchVitalsWithAutoHalt, wordDiff, writeAuditLog, writeListingsToDir, writeMigrationOutput };
1936
+ export { ApiError, type ApiSigningFingerprint, type AppInfo, type AppStatus, type ApplyReleaseNotesResult, type AuditEntry, type BatchSyncResult, type BundleAnalysis, type BundleComparison, type BundleEntry, type BundleSizeCheckResult, type BundleSizeConfig, type BundlesWaitOptions, type ChangelogEntry, type ChecklistInput, type ChecklistItem, type ChecklistResult, type CommandContext, type CommitCluster, type CommitResult, ConfigError, type CreateEnterpriseAppParams, DEFAULT_LIMITS, DEFAULT_MODELS, DEFAULT_PREFLIGHT_CONFIG, DEFAULT_WATCH_THRESHOLDS, type DecodedNotification, type DiffToken, type DiscoverPluginsOptions, type DiscoveredPlugin, type DryRunPublishResult, type DryRunResult, type DryRunUploadResult, type ErrorReason, type ExportImagesOptions, type ExportImagesSummary, type FastlaneDetection, type FastlaneLane, type FetchChangelogOptions, type FieldLintResult, type FileValidationResult, type FinancialReportDownload, type FindingSeverity, GOOGLE_PLAY_LANGUAGES, type GameConfigDiff, type GamesPushOptions, type GamesSyncResult, type GenerateOptions, type GeneratedChangelog, type GetAppStatusOptions, type GitNotesOptions, type GitReleaseNotes, type GitRunner, GpcError, type ImageSyncDetail, type ImageSyncOptions, type ImageSyncResult, type ImageValidationResult, type InitOptions, type InitResult, type InternalSharingUploadResult, type KeystoreFingerprint, type ListGamesConfigOptions, type ListIapOptions, type ListReportsResult, type ListSubscriptionsOptions, type ListUsersOptions, type ListVoidedOptions, type ListingDiff, type ListingFieldLimits, type ListingLintResult, type ListingsResult, type LoadedPlugin, type LocaleBundle, type LocaleEntry, type MigrationResult, NetworkError, type OneTimeProductDiff, type OutputMode, PERMISSION_PROPAGATION_WARNING, PLACEHOLDER_TEXT, PLAY_STORE_LIMIT, PROVIDER_WHITELIST, type ParsedCommit, type ParsedManifest, type ParsedMonth, type PlayStoreFormat, type PlayStoreRenderOptions, PluginManager, type PreflightConfig, type PreflightFinding, type PreflightOptions, type PreflightResult, type PreflightScanner, type Provider, type PublishOptions, type PublishResult, type PushResult, type QuotaUsage, RENDERERS, REVIEW_SORT_PRESETS, type RawCommit, type ReadinessBreakdownEntry, type ReadinessGrade, type ReadinessScore, type ReadinessSignal, type ReadinessSignalStatus, type ReleaseDiff, type ReleaseNotesValidation, type ReleaseStatusResult, type Renderer, type ReportObject, type ReportsAuth, type ResolveAiConfigOptions, type ResolveLocalesOptions, type ReviewAnalysis, type ReviewExportOptions, type ReviewSortPreset, type ReviewsFilterOptions, type RevocationRefundType, type RtdnStatus, SECTION_ORDER, SENSITIVE_ARG_KEYS, SENSITIVE_KEYS, SEVERITY_ORDER, type ScaffoldOptions, type ScaffoldResult, type SigningConsistencyResult, type SigningKeyComparison, type Spinner, type StatsReportDownload, type StatusDiff, type StatusRelease, type StatusReviews, type StatusVitalMetric, type SubscriptionAnalytics, type SubscriptionDiff, type SyncResult, type ThresholdResult, type TrainConfig, type TrainState, type TranslateBundleOptions, type TranslatedBundle, type TranslationFailure, type TranslationPath, type TranslationResult, type Translator, type TranslatorConfig, type UploadResult, VALID_WATCH_METRICS, type ValidateCheck, type ValidateOptions, type ValidateResult, type ValidatedPluginApproval, type VersionVitalsComparison, type VersionVitalsRow, type VitalsOverview, type VitalsQueryOptions, type VitalsTrendComparison, type WatchAction, type WatchCallbacks, type WatchConfig, type WatchEvent, type WatchMetric, type WatchOptions, type WatchRollout, type WatchSummary, type WatchVitalReading, type WatchVitalsOptions, type WebhookPayload, type ZipCsvEntry, abortTrain, acknowledgeProductPurchase, activateBasePlan, activateOffer, addRecoveryTargeting, addTesters, advanceTrain, analyzeBundle, analyzeRemoteListings, analyzeReviews, annotateListResult, applyReleaseNotes, assignRelease, batchGetOrders, batchSyncInAppProducts, buildChecklist, buildLocaleBundle, bundleToReleaseNotes, cancelRecoveryAction, cancelSubscriptionPurchase, cancelSubscriptionV2, checkBundleSize, checkSigningConsistency, checkThreshold, classifyError, clearAuditLog, commitWithRescue, compareBundles, compareFingerprints, compareVersionVitals, compareVitalsTrend, computeStatusDiff, consumeProductPurchase, convertRegionPrices, createAchievementConfig, createAuditEntry, createDeviceTier, createEnterpriseApp, createExternalTransaction, createGrant, createInAppProduct, createLeaderboardConfig, createOffer, createOneTimeOffer, createOneTimeProduct, createRecoveryAction, createSpinner, createSubscription, createTrack, createTranslator, deactivateBasePlan, deactivateOffer, decodeCsvText, decodeNotification, decodeStatsCsv, defaultGitRunner, deferSubscriptionPurchase, deferSubscriptionV2, deleteAchievementConfig, deleteBasePlan, deleteGrant, deleteImage, deleteInAppProduct, deleteLeaderboardConfig, deleteListing, deleteOffer, deleteOneTimeOffer, deleteOneTimeProduct, deleteSubscription, deployRecoveryAction, detectFastlane, detectOutputFormat, diffAchievementConfig, diffLeaderboardConfig, diffListings, diffListingsCommand, diffListingsEnhanced, diffOneTimeProduct, diffReleases, diffSubscription, discoverPluginEntries, discoverPlugins, dispatchWebhook, downloadFinancialReport, downloadGeneratedApk, downloadReportObject, downloadStatsReport, exportImages, exportReviews, extractCsvEntriesFromZip, fetchAggregateCost, fetchChangelog, fetchReleaseNotes, findBundle, formatChangelogEntry, formatCustomPayload, formatDiscordPayload, formatJunit, formatMoney, formatNotification, formatOutput, formatPathLabel, formatSlackPayload, formatStatusDiff, formatStatusSummary, formatStatusTable, formatWordDiff, generateChangelog, generateMigrationPlan, generateNotesFromGit, getAchievementConfig, getAllScannerNames, getApiSigningFingerprint, getAppInfo, getAppStatus, getCountryAvailability, getDeviceTier, getExternalTransaction, getInAppProduct, getKeystoreFingerprint, getLeaderboardConfig, getListings, getOffer, getOneTimeOffer, getOneTimeProduct, getOrderDetails, getProductPurchase, getProductPurchaseV2, getQuotaUsage, getReleasesStatus, getReview, getRtdnStatus, getSubscription, getSubscriptionAnalytics, getSubscriptionPurchase, getTrainStatus, getUser, getVitalsAnomalies, getVitalsAnr, getVitalsBattery, getVitalsCrashes, getVitalsErrorCount, getVitalsLmk, getVitalsMemory, getVitalsOverview, getVitalsRendering, getVitalsStartup, gradeFromPercent, gunzipIfNeeded, handleBreach, importDataSafety, importTestersFromCsv, initAudit, initProject, inviteUser, isFinancialReportType, isGzip, isStatsReportType, isValidBcp47, isValidReportType, isValidStatsDimension, isVersionedNotesDir, isZip, lintListing, lintListings, lintLocalListings, listAchievementConfigs, listAchievements, listAuditEvents, listBundles, listDeviceTiers, listGeneratedApks, listGrants, listImages, listInAppProducts, listLeaderboardConfigs, listLeaderboards, listOffers, listOneTimeOffers, listOneTimeProducts, listRecoveryActions, listReportObjects, listReports, listReviews, listSubscriptions, listTesters, listTracks, listUsers, listVoidedPurchases, loadPreflightConfig, loadStatusCache, maybePaginate, migratePrices, monthToken, moreResultsFooter, normalizeFingerprint, parseAppfile, parseCommit, parseFastfile, parseGrantArg, parseKeytoolOutput, parseMonth, parseRemoteUrl, pauseTrain, promoteRelease, publish, publishEnterpriseApp, pullAchievementConfigs, pullLeaderboardConfigs, pullListings, pushAchievementConfigs, pushLeaderboardConfigs, pushListings, readListingsFromDir, readReleaseNotesForVersion, readReleaseNotesFromDir, readinessBadgeColor, readinessBadgeMarkdown, readinessBadgeUrl, redactAuditArgs, redactSensitive, refundExternalTransaction, refundOrder, relativeTime, removeTesters, removeUser, renderChecklistMarkdown, renderJson, renderMarkdown, renderPlayStore, renderPlayStoreJson, renderPlayStoreMd, renderPlayStorePrompt, renderPrompt, replyToReview, reportAccessDeniedError, reportBucketNotFoundError, reportObjectNotFoundError, reportPrefix, resolveAiConfig, resolveLocales, resolveReportsBucket, retryOnUploadNotComplete, revokeSubscriptionPurchase, runPreflight, runWatch, runWatchLoop, safePath, safePathWithin, saveStatusCache, scaffoldPlugin, scoreReadiness, searchAuditEvents, searchVitalsErrors, sendNotification, sendWebhook, setAchievementIcon, setLeaderboardIcon, sha256File, sortResults, sortReviews, startTrain, statusHasBreach, syncImages, syncInAppProducts, topFiles, trackBreachState, translateBundle, updateAchievementConfig, updateAppDetails, updateDataSafety, updateGrant, updateInAppProduct, updateLeaderboardConfig, updateListing, updateOffer, updateOneTimeOffer, updateOneTimeProduct, updateRollout, updateSubscription, updateTrackConfig, updateUser, uploadExternallyHosted, uploadImage, uploadInternalSharing, uploadRelease, validateAndCommit, validateBundleForApply, validateImage, validateLanguageCode, validatePackageName, validatePluginForApproval, validatePreSubmission, validateReleaseNotes, validateSku, validateTrackName, validateUploadFile, validateVersionCode, waitForBundle, waitForBundleProcessing, watchVitalsWithAutoHalt, wordDiff, writeAuditLog, writeListingsToDir, writeMigrationOutput };